Modern networks are typically implemented using a plurality of interconnected, standalone routers. Each router implements a forwarding protocol to forward packets to other routers, and a routing protocol to inform other routers in the network of the links that it has to surrounding routers. By having the routers propagate this routing information to each other, all of the routers in the network are able to ascertain the overall topology of the network. Using this topology information, each router is able to determine, given a destination address, what the next hop should be to route a set of information to a destination.
Recently, there has been a movement towards router aggregation. With router aggregation, the functionality of a plurality of standalone routers is incorporated into a single physical router. With router aggregation, it is possible for multiple routers to share certain resources, such as power supplies, a chassis, cooling mechanisms (e.g. fans), etc. By sharing these resources, cost savings can be realized.
Currently, two approaches are used to implement router aggregation: virtual routers and multi-routers. Under the virtual routers approach, the router aggregation function is achieved mainly through software. Specifically, a single processor executes software to give rise to multiple router processes. Each router process represents a “virtual router”, and each router process can be configured to have different functionality. Each router process is able to receive packets, make its own routing decisions, and forward packets to external routers. Thus, in many respects, each router process behaves like a standalone router.
The multi-routers approach is slightly different. Rather than having a single processor give rise to several router processes, the multi-routers approach assigns a processor to each router. Put another way, there are a plurality of processors in a multi-routers system, and each processor executes software to give rise to one router process. Each router process can be configured to have different functionality. In addition, each router process is able to receive packets, make its own routing decisions, and forward packets to external routers. Thus, like the virtual routers, each router process in the multi-routers approach behaves in many respects like a standalone router.
These two approaches have been used primarily by service providers in the networking industry to implement private networks for multiple customers. Specifically, a service provider implements multiple routers (using either of the above approaches) within a single physical router, and then assigns each router to a different customer. The functionality of each router is then tailored to fit the needs of the customer to which that router has been assigned. Once that is done, the customer can use the router to implement the customer's own private network.
As the word “private” suggests, the routers within a single physical router generally do not share information with each other. In fact, they typically are not even aware of each other's presence. That being the case, they do not have links to each other, they do not share routing information with each other, nor do they communicate or interact with each other. For the private network implementation, this lack of awareness and communication is the goal since each private network can have an overlapping address space. However, for many other implementations in which it is desirable for the multiple routers within a single physical router to interact and to truly emulate the behavior of interconnected standalone routers, these limitations cannot be tolerated. For such implementations, the above approaches cannot be used. As a result, a new approach is needed.